
////////////////////////////////////////////////////////////////////////////////
// template class NumericVariable

template <typename T>
void NumericVariable<T>::SaveText(const IParamObject &obj, TokenWriter &tokWriter)
{
	string valueStr;
	SaveToString(obj, valueStr);
	tokWriter.WriteNumberString(valueStr);
}


////////////////////////////////////////////////////////////////////////////////
// template class UintVariable

template <typename T>
void UintVariable<T>::LoadText(IParamObject &obj, common::Tokenizer &tokenizer)
{
	tokenizer.AssertToken(Tokenizer::TOKEN_INTEGER);
	T v;
	MustStrToSth<T>(&v, tokenizer.GetString());
	tokenizer.Next();
	SetValue(obj, v);
}


////////////////////////////////////////////////////////////////////////////////
// template class IntVariable

template <typename T>
void IntVariable<T>::LoadText(IParamObject &obj, common::Tokenizer &tokenizer)
{
	tokenizer.AssertToken(Tokenizer::TOKEN_INTEGER);
	T v;
	MustStrToSth<T>(&v, tokenizer.GetString());
	tokenizer.Next();
	SetValue(obj, v);
}


////////////////////////////////////////////////////////////////////////////////
// template class RealVariable

template <typename T>
void RealVariable<T>::LoadText(IParamObject &obj, common::Tokenizer &tokenizer)
{
	tokenizer.AssertToken(Tokenizer::TOKEN_INTEGER, Tokenizer::TOKEN_FLOAT);
	T v;
	MustStrToSth<T>(&v, tokenizer.GetString());
	tokenizer.Next();
	SetValue(obj, v);
}
